HightouchのSync処理をdbtのexposureとして登録できる「dbt exposure sync」を試してみた
さがらです。
HightouchのSync処理をdbtのexposureとして登録できる「dbt exposure sync」を試してみたので、その内容を本記事でまとめてみます。
dbtのexposureとは
まず前提知識として、dbtの「exposure」ですがdbtで定義した各Modelの使い道を記述できる機能です。
実際には、下記のようなYAML形式のファイルでexposureを定義します。このYAMLでは、dbtのModelがBIツールのダッシュボードとして使われているので、その内容が定義されています。(dbt exposureの公式Docより引用)
version: 2 exposures: - name: weekly_jaffle_metrics label: Jaffles by the Week type: dashboard maturity: high url: https://bi.tool/dashboards/1 description: > Did someone say "exponential growth"? depends_on: - ref('fct_orders') - ref('dim_customers') - source('gsheets', 'goals') - metric('count_orders') owner: name: Callum McData email: data@jaffleshop.com
dbt exposure syncとは
前述したdbtのexposureですが、現状はユーザーが手書きで定義していくしかありません。正直、大変ですよね…
そこで、Hightouchのdbt exposure syncの出番です!
Hightouchのdbt exposure sync機能ならば、exposureの記述をHightouch側で自動で行ってCommitしてくれるため、dbtのModelがHightouchで使われている場合にユーザー側で手作業での記述が不要となります。
以下は公式ドキュメントですが、手順や動画もありますのでこちらもぜひご覧ください。
事前準備
というとで早速dbt exposure syncを試していきたいのですが、事前準備がありますので、その内容について記します。
HightouchとdbtのGitリポジトリが連携済であること
このdbt exposure sync機能はHightouchからdbt用のGitリポジトリに対して直接Commitするため、事前にHightouchとdbtのGitリポジトリが連携済である必要があります。
こちらの手順については、下記のブログでも試しておりますのでぜひこちらを参考にしてもらえると嬉しいです。
Hightouch上でdbt Modelを用いたSyncを1つ定義
今回試すdbt exposure sync機能は、dbt Modelを用いたSyncが必須となります。(exposureとして定義するため当たり前ではあるのですが…)
そのため、今回はdbt Modelをスプレッドシートにエクスポートするという非常にシンプルなSyncを事前に定義しておきました。
dbt exposure syncを有効にする
では、事前準備が済んだらdbt exposure syncを有効にしてみます!
Hightouchの画面左のメニューからExtensions
を押します。
dbt models
を選択します。
dbtと連携済のSourceを選択します。
dbt Exposures Sync
という項目があるのでこれを有効化し、Save
を押します。
これでdbt exposure syncの有効化は完了です!
実際にGitリポジトリにexposureが追加されるか確認してみる
有効化した後で、Full resync
を押してみます。
Sync Status欄のランプが緑色になったら、完了です!
この状態で対象のGitリポジトリのmainブランチを見てみると、models
フォルダ内にyamlファイルが追加されています。
このファイルを見てみると、exposureが追記されていました。今後他のdbt Modelを用いたSyncを追加すると、このファイルに追記されていく仕様となっております。
exposureが追加されたため、dbt CloudからもMainブランチの内容をPullして確認してみると、無事にexposureが記述されたファイルが確認でき、リネージも確認できました!
最後に
HightouchのSync処理をdbtのexposureとして登録できる「dbt exposure sync」を試してみました。
この機能があれば、dbtで開発する前にHightouchの処理に影響が及ぶ可能性があることに気づいたり、Hightouchでよく使用されている・使用されていないModelの確認にもつなげることが出来ると思います。
設定も難しくないため、ぜひdbtとHightouchを併せて使用される方には試して頂きたい機能です!